import java.util.Scanner;

/**
 * Created by loso on 2017/3/16.
 *
 * 小B最近对破解和程序攻击产生了兴趣，她迷上了病毒，然后可怕的事情就发生了。不知道什么原因，可能是小B的技术水平还不够高，小B编写的病毒程序在攻击一个服务器时出现了问题。尽管成功的侵入了服务器，但并没有按照期望的方式发挥作用。
 小B的目的很简单:控制服务器的内存区域，试图在内存中装入从1到n之间的n个自然数，以覆盖内存区域。可能是小B对编程理解上的问题，病毒似乎没有完全成功。可能是由于保护机制的原因，内存写入只接受二进制的形式，所以十进制表达中除0和1之外的其他值都没有成功写入内存。小B希望知道，究竟有多少数成功的写入了服务器的内存！
 *
 */
public class _360_bingdu {


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (input.hasNext()){

            int num = input.nextInt();

                String s = Integer.toString(num);
                num = count(s);
                System.out.println(num);
            }
        }

    public static int count(String snum){
        int out = (int)Math.pow(2.0,(double)snum.length()) - 1;
        int move = (out + 1)/2;
        for (int i = 0; i < snum.length(); i++) {
            if (snum.charAt(i) == '0'){
                out = out - move;
            }
            else if(snum.charAt(i) > '1'){
                return out;
            }
            move = move /2;
        }
        return out;
    }

}
